<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>立即执行函数</title>
</head>

<body>
    <script>
        //立即执行函数  也称为IIFE
        (function () {
            var a = 3;
            console.log(a + 3);
        })();

        //它的作用是可以避免声明全局变量  不会污染全局命名空间


        (function () {
            var a = 1;
            function test() {
                console.log(++a);
            };
            //这里在window上声明实际上是对外暴露了一个函数
            window.$ = function () {
                return {
                    test: test
                }
            }
        })()
        //这里怎么去获取到局部变量的a
        $().test();
        //这里$就是一个函数  $()调用后返回的是一个对象


        //匿名函数的作用还可以用来写模块  在webpack没出现之前 早期的一些模块化方法就是使用立即执行函数来实现
    </script>
</body>

</html>